热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

消息|分布式_SpringBoot的JMS发送和接收队列消息,基于ActiveMQ

篇首语:本文由编程笔记#小编为大家整理,主要介绍了SpringBoot的JMS发送和接收队列消息,基于ActiveMQ相关的知识,希望对你有一定的参考价值。消息队列Ac

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Spring Boot的JMS发送和接收队列消息,基于ActiveMQ相关的知识,希望对你有一定的参考价值。


消息队列ActiveMQ是JMS的一种实现,ActiveMQ可以单独作为一个消息队列组件即插即拔,即插即用,参考下面两篇文章:

分布式MQTT消息订阅-发布框架:高可用性ActiveMQ_Zhang Phil-CSDN博客_mqtt分布式架构分布式MQTT消息订阅-发布框架:高可用性ActiveMQActiveMQ是MQTT的一种实现。ActiveMQ基于JMS。ActiveMQ开发包下载地址:http://activemq.apache.org/download.htmlActiveMQ最适合做消息推送。国内很多厂商基于ActiveMQ改造出多种消息推送平台。下载完成ActiveMQ压缩包后解压,解压后直接在Java环境中运...https://zhangphil.blog.csdn.net/article/details/94759508

ActiveMQ安装配置和使用简例_Zhang Phil-CSDN博客本文作者:Zhang Phil原文链接:ActiveMQ安装配置和使用简例ActiveMQ是一套JMS(Java Message Service)开源消息服务实现的组件。以Windows操作系统为例,本文简述了ActiveMQ的安装配置和使用简例。消息服务是互联网应用的最基本功能,只要是互联网应用,就少不了消息通信。而ActiveMQ是一个相对比较成熟稳定的JMS消息服务组件,https://blog.csdn.net/zhangphil/article/details/48173665

以上是把ActiveMQ作为单独的组件(系统子模块)拆分出来加载使用。

在Spring boot里面,ActiveMQ作为JMS的实现,Spring boot内嵌、可直接使用。

定义一个POJO的消息类:

public class SimpleMsg
private String to;
private String body;
public SimpleMsg()

public SimpleMsg(String to, String body)
this.to = to;
this.body = body;

public String getTo()
return to;

public void setTo(String to)
this.to = to;

public String getBody()
return body;

public void setBody(String body)
this.body = body;

@Override
public String toString()
return "SimpleMsg" +
"to='" + to + '\\'' +
", body='" + body + '\\'' +
'';

SimpleMsg将作为spring boot程序中消息的实体传输。

定义一个spring boot的消息接收器:

import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
@Component
public class MsgReceiver
//destination的值和在application里面发送制定的目的地值需要相同才能收到
//containerFactory的变量名对应在app里面定义的JmsListenerContainerFactory
@JmsListener(destination = "@zhangphil", containerFactory = "myAppContainerFactory")
public void receiveMessage(SimpleMsg msg)
System.out.println("收到消息->");
System.out.println(msg);
System.out.println("收到消息<-");


完成spring boot的应用application&#xff1a;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jms.DefaultJmsListenerContainerFactoryConfigurer;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
import org.springframework.jms.config.JmsListenerContainerFactory;
import javax.jms.ConnectionFactory;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.support.converter.MappingJackson2MessageConverter;
import org.springframework.jms.support.converter.MessageConverter;
import org.springframework.jms.support.converter.MessageType;
&#64;SpringBootApplication
&#64;EnableJms
public class SpringJmsApplication
&#64;Bean
public JmsListenerContainerFactory myAppContainerFactory(ConnectionFactory connectionFactory,
DefaultJmsListenerContainerFactoryConfigurer configurer)
DefaultJmsListenerContainerFactory factory &#61; new DefaultJmsListenerContainerFactory();
configurer.configure(factory, connectionFactory);
return factory;

&#64;Bean
public MessageConverter jmsMessageConverter()
MappingJackson2MessageConverter converter &#61; new MappingJackson2MessageConverter();
converter.setTargetType(MessageType.TEXT);
converter.setTypeIdPropertyName("_type");
return converter;

public static void main(String[] args)
ConfigurableApplicationContext context &#61; SpringApplication.run(SpringJmsApplication.class, args);
JmsTemplate jmsTemplate &#61; context.getBean(JmsTemplate.class);
SimpleMsg msg &#61; new SimpleMsg("zhangfly", "Hello,world!");
System.out.println("发送消息:" &#43; msg);
jmsTemplate.convertAndSend("&#64;zhangphil", msg);
System.out.println("发送结束");


以上完成后&#xff0c;运行SpringJmsApplication&#xff0c;如果成功&#xff0c;控制台输出&#xff1a;

发送消息:SimpleMsgto&#61;&#39;zhangfly&#39;, body&#61;&#39;Hello,world!&#39;
发送结束
收到消息->
SimpleMsgto&#61;&#39;zhangfly&#39;, body&#61;&#39;Hello,world!&#39;
收到消息<-


推荐阅读
  • 基于Springboot实现Mqtt
    转载:基于Springboot实现MqttJava端开发:pom.xml: ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 本文介绍了协程的概念和意义,以及使用greenlet、yield、asyncio、async/await等技术实现协程编程的方法。同时还介绍了事件循环的作用和使用方法,以及如何使用await关键字和Task对象来实现异步编程。最后还提供了一些快速上手的示例代码。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 一、什么是闭包?有什么作用什么是闭包闭包是定义在一个函数内部的函数,它可以访问父级函数的内部变量。当一个闭包被创建时,会关联一个作用域—— ... [详细]
  • BZOJ1233 干草堆单调队列优化DP
    本文介绍了一个关于干草堆摆放的问题,通过使用单调队列来优化DP算法,求解最多可以叠几层干草堆。具体的解题思路和转移方程在文章中进行了详细说明,并给出了相应的代码示例。 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
author-avatar
果博东方手机版
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有